﻿package com.farm.code.server;

import java.util.List;
import java.util.Map;

import com.farm.code.domain.FarmCodeGuide;
import com.farm.core.auth.domain.LoginUser;
import com.farm.core.sql.query.DataQuery;
import com.farm.core.sql.result.DataResult;

/**
 * 代码工程运行向导
 * 
 * @author MAC_wd
 * 
 */
public interface FarmCodeGuideManagerInter {
	/**
	 *新增代码工程运行向导实体
	 * 
	 * @param entity
	 */
	public FarmCodeGuide insertFarmCodeGuideEntity(FarmCodeGuide entity,
			LoginUser user);

	/**
	 *修改代码工程运行向导实体
	 * 
	 * @param entity
	 */
	public FarmCodeGuide editFarmCodeGuideEntity(FarmCodeGuide entity,
			LoginUser user);

	/**
	 *删除代码工程运行向导实体
	 * 
	 * @param entity
	 */
	public void deleteFarmCodeGuideEntity(String entity, LoginUser user);

	/**
	 *获得代码工程运行向导实体
	 * 
	 * @param id
	 * @return
	 */
	public FarmCodeGuide getFarmCodeGuideEntity(String id);

	/**
	 * 创建一个基本查询用来查询当前代码工程运行向导实体
	 * 
	 * @param query
	 *            传入的查询条件封装
	 * @return
	 */
	public DataQuery createFarmCodeGuideSimpleQuery(DataQuery query);

	/**
	 * 获得数据字段
	 * 
	 * @param jdbcsetings
	 * @return
	 */
	public DataResult getDatabaseField(FarmCodeGuide jdbcAndTableSetings);

	/**
	 * 修改数据库设置到项目信息中
	 * 
	 * @param projectid
	 * @param jdbcsetings
	 * @param currentUser
	 * @return
	 */
	public FarmCodeGuide editProjectJDBCSetings(String projectid,
			FarmCodeGuide entity, LoginUser currentUser);

	/**
	 * 获得表信息
	 * 
	 * @param jdbcsetings
	 * @return
	 */
	public List<String> getDatabaseTables(FarmCodeGuide jdbcsetings);

	/**
	 * 保存向导的APP(表名业务名等)配置
	 * 
	 * @param projectid
	 * @param entity
	 * @param currentUser
	 * @return
	 */
	public FarmCodeGuide editProjectAppSetings(String projectid,
			FarmCodeGuide entity, LoginUser currentUser);

	/**
	 * 保存数据库表字段信息
	 * 
	 * @param projectid
	 * @param fields
	 */
	public void editFarmCodeGuideTableField(String projectid,
			List<Map<String, Object>> fields);

	/**用来生成模型参数
	 * @param projectid
	 * @return
	 */
	public Map<String, Object> getTemplateParas(String projectid);

	/**运行模板引擎生成代码
	 * @param projectid
	 * @param workpath
	 */
	public void runTemplate(String projectid, String workpath);
}